/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import Banco.Classes.Aluno;
import Banco.Classes.Cadastro;
import Banco.Classes.Professor;
import Banco.Classes.Usuario;
import Banco.DAO.loginDAO;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Igor
 */
public class UsuarioBean {

    private Usuario usuario;
    private Cadastro cadastro;
    private loginDAO login;
    private Aluno aluno;
    private Professor prof;
    private String message = "ok";
    private Boolean Conf = false;

    public UsuarioBean() {
        cadastro = new Cadastro();
        usuario = new Usuario();
        login = new loginDAO();
        aluno = new Aluno();
        prof = new Professor();
    }

    /**
     * Retorna se configurações já foram feitas pelo usuário
     *
     * @return true se configurações já feitas
     */
    public Boolean getConf() {
        return Conf;
    }

    /**
     * Atribui valor ao flag das configurações
     *
     * @param Conf - flag indicativo do realizar de configurações
     */
    public void setConf(Boolean Conf) {
        this.Conf = Conf;
    }

    /**
     * Obtém dados com base nas informações de login passadas, associando às mesmas aos atributos do Bean. Também retorna uma String de navegação
     *
     * @return String para navegar entre páginas de aluno e professor
     */
    public String ok() {
        cadastro = login.Login(usuario.getLogin(), usuario.getSenha());

        if (cadastro.getMatricula() != null && cadastro.getNivelAcesso() == 0) {

            aluno = aluno.getAluno(cadastro.getMatricula());
            System.out.println("aluno" + aluno.getNome());
            message = "ok";
            return "aluno";

        } else if (cadastro.getMatricula() != null && cadastro.getNivelAcesso() == 1) {

            prof = prof.getProfessor(cadastro.getMatricula());
            System.out.println("prof" + prof.getLogin());
            message = "ok";
            return "professor";

        } else {
            message = "error";
            return null; //vai para indexdoprof
        }
    }

    /**
     * Método para retorno ao indexaluno
     *
     * @return String de navegação que retorna ao indexaluno
     */
    public String retorna() {
        return "indexaluno";
    }

    /**
     * Método para se obter o usuário logado
     *
     * @return atributo usuário do UsuarioBean
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * Atribui valor ao usuário logado
     *
     * @param usuario - usuário a ser atribuído no bean
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    /**
     * Método para se obter o aluno logado
     *
     * @return aluno logado no sistema
     */
    public Aluno getAluno() {
        return aluno;
    }

    /**
     * Atribui valores ao atributo aluno do Bean
     *
     * @param aluno - aluno a se logar no sistema
     */
    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }

    /**
     * Retorna o atributo Professor do Bean
     *
     * @return professor logado no sistema
     */
    public Professor getProf() {
        return prof;
    }

    /**
     * Atribui valor ao atributo Professor do Bean
     *
     * @param prof - professor a se logar no sistema
     */
    public void setProf(Professor prof) {
        this.prof = prof;
    }

    /**
     * Método para exibição de mensagens mediante erro de login
     *
     * @return mensagem indicando erro
     */
    public String getMessage() {
        return message;
    }



    /**
     * Método para atribuição de valor à mensagem de erro do sistema
     *
     * @param message - mensagem de erro a ser atribuída
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * Método que invalida a sessão do usuário
     *
     * @return String para retornar à página inicial
     */
    public String logout() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
        session.invalidate();
        return "welcome";
    }
}
